Self Solving Rubik's Cube